#ifndef LEXERBASE_H
#define LEXERBASE_H

#ifdef SCI_NAMESPACE
namespace Scintilla {
#endif

  class LexerBase : public ILexer {
    protected:
      PropSetSimple props;
      enum {numWordLists = KEYWORDSET_MAX + 1};
      WordList *keyWordLists[numWordLists + 1];
    public:
      LexerBase();
      virtual ~LexerBase();
      void  Release();
      int  Version() const;
      const char *  PropertyNames();
      int  PropertyType( const char *name );
      const char *  DescribeProperty( const char *name );
      int  PropertySet( const char *key, const char *val );
      const char *  DescribeWordListSets();
      int  WordListSet( int n, const char *wl );
      void  Lex( unsigned int startPos, int lengthDoc, int initStyle, IDocument *pAccess ) = 0;
      void  Fold( unsigned int startPos, int lengthDoc, int initStyle, IDocument *pAccess ) = 0;
      void *  PrivateCall( int operation, void *pointer );
  };

  #ifdef SCI_NAMESPACE
}
  #endif

#endif
